home *** CD-ROM | disk | FTP | other *** search
/ Whiteline: delta / whiteline CD Series - delta.iso / systems / minix / tcsh6033.zoo / tcsh-603.pl3 / ARGV.TXT next >
Text File  |  1993-06-06  |  3KB  |  57 lines

  1. This is a proposal for an extension of Atari's ARGV argument passing scheme
  2. standard.  It has been discussed on the MiNT mailing list.  Please note
  3. that this proposal should not yet be regarded as an "official" Atari
  4. standard; however, according to Atari's Eric Smith, it's unlikely that
  5. Atari's new standard will differ a lot from the one proposed here.
  6.  
  7.                                   *
  8.  
  9. This ARGV standard extension adds the possibility of passing blank (i.e.,
  10. zero length) arguments via the command line when calling another program.
  11.  
  12. The ARGV extended argument passing scheme standard should be extented by
  13. the following clauses:
  14.  
  15.     If the command line does _not_ contain blank arguments, the old ARGV 
  16.     standard applies; there are no additions.  This is for maximal 
  17.     backwards compatibility with old (unaware) applications.
  18.  
  19.     _If_ (and only if) there are blank arguments, they're substituted by 
  20.     single spaces in the argv[] representation in the environment and
  21.     by the string "''" (two single quotes) in the basepage's command 
  22.     line representation.  Their position in argv[] is signaled thru the 
  23.     value of the "ARGV=" environment variable (which was reserved by 
  24.     Atari's earlier standard for future usage).  This value consists of 
  25.     the string "NULL:", followed by a comma-separated list of decimal-
  26.     encoded indexes to the positions of the blank arguments in the 
  27.     argv[] vector.
  28.  
  29. Example:  The following command:
  30.     foo bar '' '' blah '' frob
  31. results in the following being appended to the child's environment:
  32.     "ARGV=NULL:2,3,5\0foo\0bar\0 \0 \0blah\0 \0frob\0\0"
  33. The basepage contains the following string at offset 0x80:
  34.     "\177bar '' '' blah '' frob\0"
  35.  
  36. A program which is aware of the new standard will notice the magic word 
  37. "NULL" in ARGV's value and will decode the argv[] indexes it signals.
  38.  
  39. A program which is not aware of the new standard, but which is aware
  40. of Atari's old ARGV standard will see spaces in place of blank
  41. arguments.  The spaces have been introduced to guarantee that
  42. the parameters stay on their positions.
  43.  
  44. Non-ARGV-aware programs (those which read their command line from their
  45. basepage) should see the parameters in the right place too..  Of course,
  46. a space can't be inserted in place of an blank argument because spaces
  47. separate words in the basepage's command line, which is why the single
  48. quotes have been introduced.
  49.  
  50. Those programs that use the value of ARGV= for other purposes (Mark
  51. Williams C compiled programs) will conform/work as long as they're not
  52. passed blank args.  If someone tries to pass blank args to them from an
  53. aware shell, these programs will lose.  However, these programs would
  54. also lose in this case if the (new) standard wouldn't exist (because
  55. blank arguments are impossible resp. truncate the ARGV parameters in the
  56. environment), so this is not really a problem.
  57.